home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DViewer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  12.8 KB  |  487 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                              **
  3.  **     Module:        QD3DViewer.h                                             **                        
  4.  **                                                                              **
  5.  **                                                                              **
  6.  **     Purpose:     Viewer Controller Interface File.                         **            
  7.  **                                                                              **
  8.  **                                                                              **
  9.  **     Copyright (C) 1994-1997 Apple Computer, Inc.  All rights reserved.     **
  10.  **                                                                              **
  11.  **                                                                              **
  12.  *****************************************************************************/
  13. #ifndef QD3DViewer_h
  14. #define QD3DViewer_h
  15.  
  16. #include "QD3D.h"
  17. #include "QD3DGroup.h"
  18.  
  19. #if defined(PRAGMA_ONCE) && PRAGMA_ONCE
  20.     #pragma once
  21. #endif  /*  PRAGMA_ONCE  */ 
  22.  
  23. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  24.  
  25. #if defined(__xlc__) || defined(__XLC121__)
  26.     #pragma options enum=small
  27. #endif
  28.  
  29. #include <Events.h>
  30. #include <Types.h>
  31. #include <Windows.h>
  32.  
  33. #if defined(__xlc__) || defined(__XLC121__)
  34.     #pragma options enum=reset
  35.     #pragma options enum=int
  36.     #pragma options align=power
  37. #elif defined(__MWERKS__)
  38.     #pragma enumsalwaysint on
  39.     #pragma options align=native
  40. #elif defined(__MRC__) || defined(__SC__)
  41.     #if __option(pack_enums)
  42.         #define PRAGMA_ENUM_RESET_QD3DVIEWER 1
  43.     #endif
  44.     #pragma options(!pack_enums)
  45.     #pragma options align=power
  46. #endif
  47.  
  48.  
  49. #ifdef __cplusplus
  50. extern "C" {
  51. #endif    /* __cplusplus */
  52.  
  53. typedef void *TQ3ViewerObject;
  54.  
  55. typedef OSErr (*TQ3ViewerDrawingCallbackMethod)(
  56.         TQ3ViewerObject    theViewer,
  57.         const void *data);
  58.  
  59.  
  60. enum {
  61.     kQ3ViewerShowBadge             = 1<<0,
  62.     kQ3ViewerActive                = 1<<1,
  63.     kQ3ViewerControllerVisible    = 1<<2,
  64.     kQ3ViewerDrawFrame            = 1<<3,
  65.     kQ3ViewerDraggingOff        = 1<<4,
  66.     
  67.     kQ3ViewerButtonCamera        = 1<<5,
  68.     kQ3ViewerButtonTruck        = 1<<6,
  69.     kQ3ViewerButtonOrbit        = 1<<7,
  70.     kQ3ViewerButtonZoom            = 1<<8,
  71.     kQ3ViewerButtonDolly        = 1<<9,
  72.     kQ3ViewerButtonReset        = 1<<10,
  73.     
  74.     kQ3ViewerOutputTextMode        = 1<<11,
  75.     kQ3ViewerDragMode            = 1<<12,
  76.  
  77.     kQ3ViewerDrawGrowBox        = 1<<13,
  78.     kQ3ViewerDrawDragBorder        = 1<<14,
  79.  
  80.     kQ3ViewerDraggingInOff        = 1<<15,
  81.     kQ3ViewerDraggingOutOff        = 1<<16,
  82.  
  83.     kQ3ViewerDefault            = 1<<31
  84. };
  85.  
  86. enum {
  87.     kQ3ViewerEmpty    = 0,
  88.     kQ3ViewerHasModel = 1<<0,
  89.     kQ3ViewerHasUndo  = 1<<1
  90. };
  91.  
  92. typedef enum TQ3ViewerCameraView {
  93.     kQ3ViewerCameraRestore,
  94.     kQ3ViewerCameraFit,
  95.     kQ3ViewerCameraFront,
  96.     kQ3ViewerCameraBack,
  97.     kQ3ViewerCameraLeft,
  98.     kQ3ViewerCameraRight,
  99.     kQ3ViewerCameraTop,
  100.     kQ3ViewerCameraBottom
  101. } TQ3ViewerCameraView;
  102.  
  103. enum {
  104.     gestaltQD3DViewer            = 'q3vc',
  105.     gestaltQD3DViewerNotPresent    = 0,
  106.     gestaltQD3DViewerAvailable    = 1
  107. };
  108.  
  109. /******************************************************************************
  110.  **                                                                             **
  111.  **        Return viewer version number                                         **
  112.  **                                                                             **
  113.  *****************************************************************************/
  114.  
  115. OSErr Q3ViewerGetVersion(
  116.     unsigned long        *majorRevision,
  117.     unsigned long        *minorRevision);
  118.  
  119.     
  120.     
  121. /******************************************************************************
  122.  **                                                                             **
  123.  **        Return viewer release version number                                 **
  124.  **        (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release)                 **
  125.  **                                                                             **
  126.  *****************************************************************************/
  127.  
  128. OSErr Q3ViewerGetReleaseVersion(
  129.     unsigned long        *releaseRevision);
  130.  
  131.     
  132.     
  133. /******************************************************************************
  134.  **                                                                             **
  135.  **        Creation and destruction                                             **
  136.  **        Note that this is not a QuickDraw 3D object                             **
  137.  **                                                                             **
  138.  *****************************************************************************/
  139.  
  140. TQ3ViewerObject Q3ViewerNew(
  141.     CGrafPtr        port,
  142.     Rect            *rect,
  143.     unsigned long    flags);
  144.     
  145. OSErr Q3ViewerDispose(
  146.     TQ3ViewerObject theViewer);
  147.  
  148.  
  149. /******************************************************************************
  150.  **                                                                             **
  151.  **        Functions to attach data to a viewer                                 **
  152.  **                                                                             **
  153.  *****************************************************************************/
  154.  
  155. OSErr Q3ViewerUseFile(
  156.     TQ3ViewerObject    theViewer,
  157.     long            refNum);
  158.     
  159. OSErr Q3ViewerUseData(
  160.     TQ3ViewerObject    theViewer,
  161.     void            *data,
  162.     long            size);
  163.  
  164.  
  165. /******************************************************************************
  166.  **                                                                             **
  167.  **        Functions to write data out from the Viewer                             **
  168.  **                                                                             **
  169.  *****************************************************************************/
  170.  
  171. OSErr Q3ViewerWriteFile(
  172.     TQ3ViewerObject    theViewer,
  173.     long            refNum);
  174.     
  175. unsigned long Q3ViewerWriteData(
  176.     TQ3ViewerObject    theViewer,
  177.     void            **data);
  178.  
  179.  
  180. /******************************************************************************
  181.  **                                                                             **
  182.  **        Use this function to force the Viewer to re-draw                     **
  183.  **                                                                             **
  184.  *****************************************************************************/
  185.  
  186. OSErr Q3ViewerDraw(
  187.     TQ3ViewerObject theViewer);
  188.  
  189. OSErr Q3ViewerDrawContent(
  190.     TQ3ViewerObject theViewer);
  191.  
  192. OSErr Q3ViewerDrawControlStrip(
  193.     TQ3ViewerObject theViewer);
  194.  
  195.  
  196. /******************************************************************************
  197.  **                                                                             **
  198.  **        Function used by the Viewer to filter and handle events                 **
  199.  **                                                                             **
  200.  *****************************************************************************/
  201.  
  202. Boolean Q3ViewerEvent(
  203.     TQ3ViewerObject    theViewer,
  204.     EventRecord        *evt);
  205.  
  206.  
  207. /******************************************************************************
  208.  **                                                                             **
  209.  **        This function returns a PICT of the contents of the                  **
  210.  **        Viewer's window.  The application should dispose the PICT.             **
  211.  **                                                                             **
  212.  *****************************************************************************/
  213.  
  214. PicHandle Q3ViewerGetPict(
  215.     TQ3ViewerObject theViewer);
  216.  
  217.  
  218. /******************************************************************************
  219.  **                                                                             **
  220.  **        Calls for dealing with Buttons                                         **
  221.  **                                                                             **
  222.  *****************************************************************************/
  223.  
  224. OSErr Q3ViewerGetButtonRect(
  225.     TQ3ViewerObject    theViewer,
  226.     unsigned long    button,
  227.     Rect            *rect);
  228.  
  229. unsigned long Q3ViewerGetCurrentButton(
  230.     TQ3ViewerObject    theViewer);
  231.     
  232. OSErr Q3ViewerSetCurrentButton(
  233.     TQ3ViewerObject    theViewer,
  234.     unsigned long    button);
  235.  
  236.  
  237. /******************************************************************************
  238.  **                                                                             **
  239.  **        Functions to set/get the group to be displayed by the Viewer.         **
  240.  **                                                                             **
  241.  *****************************************************************************/
  242.  
  243. OSErr Q3ViewerUseGroup(
  244.     TQ3ViewerObject    theViewer,
  245.     TQ3GroupObject    group);
  246.     
  247. TQ3GroupObject Q3ViewerGetGroup(
  248.     TQ3ViewerObject    theViewer);
  249.  
  250.  
  251. /******************************************************************************
  252.  **                                                                             **
  253.  **        Functions to set/get the color used to clear the window                 **
  254.  **                                                                             **
  255.  *****************************************************************************/
  256.  
  257. OSErr Q3ViewerSetBackgroundColor(
  258.     TQ3ViewerObject    theViewer,
  259.     TQ3ColorARGB    *color);
  260.     
  261. OSErr Q3ViewerGetBackgroundColor(
  262.     TQ3ViewerObject    theViewer,
  263.     TQ3ColorARGB    *color);
  264.  
  265.  
  266. /******************************************************************************
  267.  **                                                                             **
  268.  **        Getting/Setting a Viewer's View object.                              **
  269.  **                                                                             **
  270.  *****************************************************************************/
  271.  
  272. TQ3ViewObject Q3ViewerGetView(
  273.     TQ3ViewerObject    theViewer);
  274.  
  275. OSErr Q3ViewerRestoreView(
  276.     TQ3ViewerObject    theViewer);
  277.  
  278.  
  279. /******************************************************************************
  280.  **                                                                             **
  281.  **        Calls for setting/getting viewer flags                                 **
  282.  **                                                                             **
  283.  *****************************************************************************/
  284.  
  285. OSErr Q3ViewerSetFlags(
  286.     TQ3ViewerObject    theViewer,
  287.     unsigned long    flags);
  288.     
  289. unsigned long Q3ViewerGetFlags(
  290.     TQ3ViewerObject    theViewer);
  291.  
  292.  
  293. /******************************************************************************
  294.  **                                                                             **
  295.  **        Calls related to bounds/dimensions.  Bounds is the size of              **
  296.  **        the window.  Dimensions can either be the Rect from the ViewHints     **
  297.  **        or the current dimensions of the window (if you do a Set).             **
  298.  **                                                                             **
  299.  *****************************************************************************/
  300.  
  301. OSErr Q3ViewerSetBounds(
  302.     TQ3ViewerObject    theViewer,
  303.     Rect            *bounds);
  304.     
  305. OSErr Q3ViewerGetBounds(
  306.     TQ3ViewerObject    theViewer,
  307.     Rect            *bounds);
  308.  
  309. OSErr Q3ViewerSetDimension(
  310.     TQ3ViewerObject    theViewer,
  311.     unsigned long    width,
  312.     unsigned long    height);
  313.  
  314. OSErr Q3ViewerGetDimension(
  315.     TQ3ViewerObject    theViewer,
  316.     unsigned long    *width,
  317.     unsigned long    *height);
  318.  
  319. /* 1.1 */
  320. OSErr Q3ViewerGetMinimumDimension(
  321.     TQ3ViewerObject    theViewer,
  322.     unsigned long    *width,
  323.     unsigned long    *height);
  324.  
  325.  
  326. /******************************************************************************
  327.  **                                                                             **
  328.  **        Port related calls                                                     **
  329.  **                                                                             **
  330.  *****************************************************************************/
  331.  
  332. OSErr Q3ViewerSetPort(
  333.     TQ3ViewerObject    theViewer,
  334.     CGrafPtr        port);
  335.     
  336. CGrafPtr Q3ViewerGetPort(
  337.     TQ3ViewerObject    theViewer);
  338.  
  339.  
  340. /******************************************************************************
  341.  **                                                                             **
  342.  **        Adjust Cursor should be called from idle loop to allow the Viewer     **
  343.  **        to change the cursor according to the cursor position/object under     **
  344.  **        the cursor.                                                             **
  345.  **                                                                             **
  346.  *****************************************************************************/
  347.  
  348. Boolean Q3ViewerAdjustCursor(
  349.     TQ3ViewerObject    theViewer,
  350.     Point            *pt);
  351.  
  352. OSErr Q3ViewerCursorChanged(
  353.     TQ3ViewerObject    theViewer);
  354.  
  355.     
  356. /******************************************************************************
  357.  **                                                                             **
  358.  **        Returns the state of the viewer.  See the constant defined at the     **
  359.  **        top of this file.                                                     **
  360.  **                                                                             **
  361.  *****************************************************************************/
  362.  
  363. unsigned long Q3ViewerGetState(
  364.     TQ3ViewerObject    theViewer);
  365.  
  366.  
  367. /******************************************************************************
  368.  **                                                                             **
  369.  **        Clipboard utilities                                                     **
  370.  **                                                                             **
  371.  *****************************************************************************/
  372.  
  373. OSErr Q3ViewerClear(
  374.     TQ3ViewerObject    theViewer);
  375.     
  376. OSErr Q3ViewerCut(
  377.     TQ3ViewerObject    theViewer);
  378.     
  379. OSErr Q3ViewerCopy(
  380.     TQ3ViewerObject    theViewer);
  381.     
  382. OSErr Q3ViewerPaste(
  383.     TQ3ViewerObject    theViewer);
  384.  
  385.  
  386. /******************************************************************************
  387.  **                                                                             **
  388.  **        1.1                                                                     **
  389.  **        New Event Model                                                         **
  390.  **                                                                             **
  391.  *****************************************************************************/
  392.  
  393. Boolean Q3ViewerMouseDown(
  394.     TQ3ViewerObject    theViewer,
  395.     long                x,
  396.     long                y);
  397.  
  398. Boolean Q3ViewerContinueTracking(
  399.     TQ3ViewerObject    theViewer,
  400.     long                x,
  401.     long                y);
  402.  
  403. Boolean Q3ViewerMouseUp(
  404.     TQ3ViewerObject    theViewer,
  405.     long                x,
  406.     long                y);
  407.  
  408. Boolean Q3ViewerHandleKeyEvent(
  409.     TQ3ViewerObject        theViewer,
  410.     EventRecord            *evt);
  411.  
  412.  
  413. /******************************************************************************
  414.  **                                                                             **
  415.  **        1.1                                                                     **
  416.  **        Drawing CallBack                                                     **
  417.  **                                                                             **
  418.  *****************************************************************************/
  419.  
  420. OSErr Q3ViewerSetDrawingCallbackMethod(
  421.     TQ3ViewerObject                    theViewer,
  422.     TQ3ViewerDrawingCallbackMethod    callbackMethod,
  423.     const void                         *data);
  424.  
  425.  
  426. /******************************************************************************
  427.  **                                                                             **
  428.  **        1.1                                                                     **
  429.  **        Undo                                                                  **
  430.  **                                                                             **
  431.  *****************************************************************************/
  432.  
  433. OSErr Q3ViewerUndo(
  434.     TQ3ViewerObject    theViewer);
  435.         
  436. Boolean Q3ViewerGetUndoString(
  437.     TQ3ViewerObject    theViewer, 
  438.     char             *string,
  439.     unsigned long     *cnt);
  440.  
  441.  
  442. /******************************************************************************
  443.  **                                                                             **
  444.  **        1.1                                                                     **
  445.  **        New Camera Stuff                                                     **
  446.  **                                                                             **
  447.  *****************************************************************************/
  448.  
  449. OSErr Q3ViewerGetCameraCount(
  450.     TQ3ViewerObject    theViewer, 
  451.     unsigned long     *cnt);
  452.  
  453. OSErr Q3ViewerSetCameraByNumber(
  454.     TQ3ViewerObject    theViewer, 
  455.     unsigned long     cameraNo);
  456.  
  457. OSErr Q3ViewerSetCameraByView(
  458.     TQ3ViewerObject        theViewer, 
  459.     TQ3ViewerCameraView viewType);
  460.  
  461.  
  462.  
  463.  
  464. #ifdef __cplusplus
  465. }
  466. #endif    /* __cplusplus */
  467.  
  468.  
  469. #if defined(__xlc__) || defined(__XLC121__)
  470.     #pragma options enum=reset
  471.     #pragma options align=reset
  472. #elif defined(__MWERKS__)
  473.     #pragma enumsalwaysint reset
  474.     #pragma options align=reset
  475. #elif defined(__MRC__) || defined(__SC__)
  476.     #if PRAGMA_ENUM_RESET_QD3DVIEWER
  477.         #pragma options(pack_enums)
  478.         #undef PRAGMA_ENUM_RESET_QD3DVIEWER
  479.     #endif
  480.     #pragma options align=reset
  481. #endif
  482.  
  483. #endif  /* OS_MACINTOSH */
  484.  
  485. #endif    /* QD3DViewer_h */
  486.  
  487.